#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>


//进程程序替换
int main()
{
    printf("running...........\n");
    execl("/usr/bin/ls", "ls", "-l", "-a", "--color=auto", NULL);
    //execlp("ls", "ls", "-l", NULL);
    perror("execl");
    //exit(1);
    
    printf("running...........\n");

    return 0;
}


//进程等待
//int main()
//{
//    pid_t pid = fork();
//    if (pid == 0)
//    {
//        int count = 5;
//        while (count)
//        {
//            printf("child pid : %d, father pid : %d, count : %d\n", getpid(), getppid(), count--);
//            sleep(1);
//        }
//        //int i = 10 / 0;
//        exit(10);
//    }
//    while (1)
//    {
//        int status = 0;
//        pid_t ret = waitpid(pid, &status, WNOHANG);
//        if ( ret == 0 )
//        {
//            printf("child is running.............\n");
//        }
//        else if ( ret > 0 )
//        {
//            printf("wait succes : %d, sig number : %d, exit number : %d\n", ret, (status & 0x7F), (status>>8) & 0xFF);
//            break;
//        }
//        else 
//        {
//            printf("调用失败\n");
//            break;
//        }
//        sleep(1);
//    }
//
//
//    //sleep(7);
//    ////pid_t ret = wait(NULL);
//    //int status = 0;
//    //pid_t ret = waitpid(pid, &status, 0);
//    //if (pid > 0)
//    //{
//    //    printf("wait succes : %d, sig number : %d, exit number : %d\n", ret, (status & 0x7F), (status>>8) & 0xFF);
//    //}
//
//    return 0;
//}

//测试进程数量
//int main()
//{
//    int count = 0;
//    while (1)
//    {
//        int ret = fork();
//        if (ret < 0)
//        {
//            printf("count : %d\n", count);
//            break;
//        }
//        else if (ret == 0)
//        {
//            while (1)
//                sleep(1);
//        }
//        count++;
//    }
//    return 0;
//}
//
